package com.alatus.util;

import org.springframework.util.ObjectUtils;

import java.util.function.Consumer;
import java.util.function.Supplier;

public class CacheUtils {
//    带有缓存的查询方法
    public static <T> T getCacheData(Supplier<T> cacheSelector, Supplier<T> databaseSelector, Consumer<T> saveCache){
//        从redis获取
        T data = cacheSelector.get();
//        从数据库获取
        if(ObjectUtils.isEmpty(data)){
            data = databaseSelector.get();
//            数据库查到了
            if(!ObjectUtils.isEmpty(data)){
//                把数据放到redis
                saveCache.accept(data);
            }
        }
//        返回数据
        return data;
    }
}
